import unittest
from api.login_api import LoginApi
import logging


class TestLogin(unittest.TestCase):
    def test01_login_ok(self):
        print('test01_login_ok')
        # 1.测试数据
        body = {"mobile": "13800000002",
                "password": "123456"}
        # 2.调用api的请求，获取响应对象
        # 2.1 实例化api对象
        login_obj = LoginApi()
        # 2.2 实例化对象调用login实例方法
        resp = login_obj.login(body)
        # 3.打印响应内容的json格式
        json_data = resp.json()
        print(f'json_data = {json_data}')
        logging.info(f'json_data = {json_data}')
        # 4.断言：预期结果 200，True，10000，'成功'
        # 左边为预期结果，右边为实际结果
        self.assertEqual(200, resp.status_code)
        self.assertEqual(True, json_data['success'])
        self.assertEqual(10000, json_data['code'])
        self.assertIn('成功', json_data['message'])  # 右边包含左边

    def test02_user_err(self):
        print('test02_user_err')
        # 1.测试数据
        body = {"mobile": "13800000222",
                "password": "123456"}
        # 2.调用api的请求，获取响应对象
        # 2.1 实例化api对象
        login_obj = LoginApi()
        # 2.2 实例化对象调用login实例方法
        resp = login_obj.login(body)
        # 3.打印响应内容的json格式
        json_data = resp.json()
        print(f'json_data = {json_data}')
        logging.info(f'json_data = {json_data}')
        # 4.断言：预期结果 200，False，20001，'错误'
        # 左边为预期结果，右边为实际结果
        self.assertEqual(200, resp.status_code)
        self.assertEqual(False, json_data['success'])
        self.assertEqual(20001, json_data['code'])
        self.assertIn('错误', json_data['message'])  # 右边包含左边

    def test03_pwd_err(self):
        print('test03_pwd_err')
        # 1.测试数据
        body = {"mobile": "13800000002",
                "password": "123456abc"}
        # 2.调用api的请求，获取响应对象
        # 2.1 实例化api对象
        login_obj = LoginApi()
        # 2.2 实例化对象调用login实例方法
        resp = login_obj.login(body)
        # 3.打印响应内容的json格式
        json_data = resp.json()
        print(f'json_data = {json_data}')
        logging.info(f'json_data = {json_data}')
        # 4.断言：预期结果 200，False，20001，'错误'
        # 左边为预期结果，右边为实际结果
        self.assertEqual(200, resp.status_code)
        self.assertEqual(False, json_data['success'])
        self.assertEqual(20001, json_data['code'])
        self.assertIn('错误', json_data['message'])  # 右边包含左边
